//需求
//复制狗狗图片

// 方式一：readFile,异步写法，需要将写入函数写在读取成功的回调函数里面
// 1、读取文件
// let fileData
// const fs = require('fs');
// fs.readFile('./狗狗_1.jpeg',(err,data)=>{
//     if(err){
//         console.log('读取失败')
//         return
//     }
//     fileData = data
//     fs.writeFile('./狗狗_2.jpeg',fileData,(err)=>{
//         if(err){
//             console.log('写入失败')
//             return
//         }
//         console.log('写入成功')
//     })
// })

// 方式二，同步，readFileSync
// const fs = require("fs");

// // 1、读取文件
// let fileData = fs.readFileSync('./狗狗_1.jpeg')
// // 2、写入文件
// fs.writeFileSync('./狗狗_3.jpeg', fileData)


// 方式三 流式读取，流式写入
// const fs = require("fs");
// const process = require('process')
// let fileData = []
// // 创建通道,读取流对象
// const rs = fs.createReadStream('./狗狗_1.jpeg')
// // 创建通道,写入流对象
// const ws = fs.createWriteStream('./狗狗_4.jpeg')
// // 开启通道
// rs.on('data',chunk => {
//     ws.write(chunk)
// })
// rs.on('end',() => {
//     console.log(process.memoryUsage())
// })
// 总结
// 1、readFile，将文件所有内容读取到内存中，占用内存大，性能消耗大
// 2、流式，性能消耗少，每次占用64kb的内存（理想）
// 读取速度一般大于写入速度

// 流式简写
const fs = require('fs')
let rs = fs.createReadStream('./狗狗_1.jpeg')
let ws = fs.createWriteStream('./狗狗_5.jpeg')
rs.pipe(ws)